package com.atguigu.gulimall.coupon;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.cloud.openfeign.EnableFeignClients;


/**
 * 1）使用nacos作为动态配置中心
// *  1、引入依赖
// *      <dependency>
// *             <groupId>com.alibaba.cloud</groupId>
// *             <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
// *      </dependency>
// *  2、创建一个bootstrop.properties，配置以下
// *          spring.application.name=gulimall-coupon
// *          spring.cloud.nacos.config.server-addr=192.168.76.156:8848
// *  3、给nacos配置中心添加默认的当前模块配置（模块名.properties） 这里定义为：gulimall-coupon.properties
// *  4、将任何需要的配置加入gulimall-coupon.properties
// *  5、为需要动态获取配置的类 加入动态更新注解@RefreshScope ；用@Value(${配置名称})获取配置值
// *      nacos配置中心的配置文件优先级大于本地的配置文件，优先使用nacos的配置项
 *
 *
 * 2）、细节
 *  1、命名空间：配置隔离，默认都是在public（保留空间）；默认新增的所有配置都在public空间
 *      a、可以创建多个命名空间做不同的配置分别适应 生产、开发、测试环境
 *          指定命名空间只需要在bootsrap.properties上配置：
 *          spring.cloud.nacos.config.namespace=命名空间ID
 *          例如：spring.cloud.nacos.config.namespace=552bad5d-8e0a-416a-b20b-0594dcd9075a
 *
 *      b、可以让每个微服务都创建自己的命名空间，让他们之间的配置相互隔离，只加载自己命名空间下的相关配置
 *
 *  2、配置集：所有的配置的集合
 *
 *  3、配置集ID：Data ID，类似文件名，确定配置的唯一标识
 *
 *  4、配置分组：
 *      默认所有的配置集都属于DEFAULT_GROUP;
 *      创建配置的时候可以自定义分组
 * 此项目中，每个微服务创建自己的命名空间，使用配置分组区分环境test、dev、prod
 *
 * 3)、同时加载多个配置集
 *  1、微服务的任何配置信息、配置文件都可以放在nacos配置中心中
 *  2、只需要在bootstrap.properties里边说明加载配置中心的哪些配置文件即可
 *  3、获取配置文件的值可以用@Value、@ConfigurationProperties等任何springboot获取配置文件的值的方式
 *
 */
@EnableDiscoveryClient
@SpringBootApplication
public class GulimallCouponApplication {

    public static void main(String[] args) {
        SpringApplication.run(GulimallCouponApplication.class, args);
    }

}
